#ifndef MQTTHANDLER_H
#define MQTTHANDLER_H

#include <QObject>
#include "mqtt/qmqtt.h"

class MqttHandler : public QObject
{
    Q_OBJECT
public:
    explicit MqttHandler(QObject *parent = 0);
    void connectToHost();
    void setHost(const QHostAddress& host){client->setHost(host);}
    void setPort(const quint16 port){client->setPort(port);}

    // 添加新的发布函数声明
    quint16 publishData(const QByteArray &data);
    quint16 publishControl(const QByteArray &data);

signals:
    void dataUpSignal(const QByteArray &);
    void ctrlUpSignal(const QByteArray &);
    void connectedSignal();      // 添加连接成功信号
    void disconnectedSignal();   // 添加断开连接信号
    void deviceOfflineSignal();  // 新增：设备离线信号

public slots:
    void doConnected();
    void doSubscribed(const QString& topic, const quint8 qos);
    void doDataReceived(QMQTT::Message message);
    void detectState();
    quint16 publish(const QMQTT::Message& message);
    void doDisconnected();       // 添加断开连接槽函数

private:
    QMQTT::Client *client;
};

#endif // MQTTHANDLER_H
